Functional Core, Imperative Shell
アプリケーションを作るときのアーキテクチャの話
恐らくこの辺が出典
https://gyazo.com/811e11b42dba2b53a847cdcb44b78460
https://gyazo.com/19cce5bc51237bdab53626128bea9fbc
アプリケーション全体で見れば、
その集合としてアプリケーションが成り立っていると見た方がイメージしやすい
アプリケーションのコア部分を関数型っぽく書き、その側部分は命令的に書くみたいなことを言っている
関数型とか命令的とか言うのは、キャッチーな単語の選択に過ぎないと思うmrsekut.icon
「コア部分で関数型プログラミングをしろ」という主張ではない
重要なのは、コア部分は副作用のない型のかっちりした感じで実装し、
副作用部分はもっと外側で書く
Haskellのような言語で、このアーキテクチャを見ると、副作用がどこにあるのか明確にわかりやすい
実際、コア部分にはIOなどは一切登場しないように実装される
コード例がイマイチな気がするが、説明はまとまってる
リンク集